package dht.data;

import java.io.Serializable;
import java.math.BigInteger;

/**
 * TabInteger contient un tableau de BigInteger et redefini les methodes
 * equals() et hashCode afin de pouvoir mapper un tableau de BigInteger vers une donnée dans une 
 * HashMap.
 * @author bouceka
 *
 */

public class TabBigInteger implements Serializable {
	
	private static final long serialVersionUID = 1676532938489557426L;
	
	private BigInteger[] tab;
	public final int lengh;
	
	public TabBigInteger(int taille){
		tab = new BigInteger[taille];
		this.lengh = taille;
	}

	public void setValue(int index, BigInteger value){
		this.tab[index] = value;
	}


	public BigInteger getValue(int index){
		return this.tab[index];
	}
	
	public boolean equals(Object o){
		
		TabBigInteger tab = (TabBigInteger)o;
		
		if(tab.lengh != this.tab.length)
			return false;
		
		for(int i=0; i<this.tab.length; i++){
			if(this.tab[i].compareTo(tab.getValue(i)) != 0){
				return false;
			}
		}
		
		return true;
	}
	
	public int hashCode(){
		int result = 0;
		for(int i=0; i<this.tab.length; i++){
			result += this.tab[i].hashCode();
		}
		return result;
	}
	
	@Override
	public String toString() {
		StringBuffer s=new StringBuffer("[");
		for (int i=0;i<this.lengh ; i++) {
			s.append(tab[i]+",");
			
		}
		s.append("]");
		return s.toString();
	}
}
